#pragma once
#include <stdint.h>

// 本文件定义rtdev——robot从总线读取到的状态信息

struct JointPeriodStatus  // 关节伺服周期性反馈数据
{
    // 由周期报文推导的数据
    bool enable;    // 关节使能
    bool is_alive;  // 关节在线

    // 由状态字直接解析
    uint16_t statusword;  // 关节状态字
    uint8_t opmode_display;
    uint8_t act_collision_lv;
    bool home_sta;  //0-未回零 1-已回零
    bool torq_overload;
    bool backdrive_flg;   //反向驱动状态标志
    bool collision;       //true：发生碰撞 false：未碰撞
    bool is_tor_forward;  // 是否为前馈

    double act_pos;   // 关节位置，反馈位置，由编码器数据采集而来
    double cmd_pos;   // 指令位置，由控制器下发
    double act_torq;  // 关节力矩

    uint32_t errorcode;

    //ota data
    double ota_pos_diff;
    double ota_dual_encoder_diff;
    double ota_dc_vol;
    double sensor_torque;  // 阿童木机型，使用7、8字节储存力传感器数据
};

struct JointParmRsp
{
    uint32_t serial_num;
    uint32_t version;
    uint32_t supplier_id;
    uint32_t power_on_date;
    uint32_t joint_min_limit;
    uint32_t joint_max_limit;
    uint32_t joint_friction;
    uint32_t collision_base_threshold;
    uint32_t collision_torque_threshold;
    uint32_t motor_tor;    // 额定力矩
    uint32_t motor_ratio;  // 减速比
};